<template>
  <div class="app-container">
    <!-- 部门列表 -->
    <!--查询表单-->
    <div class="search-div">
      <el-form label-width="70px">
        <!-- <el-row>
          <el-col :span="6">
            <el-form-item label="部门名称">
              <el-input
                style="width: 95%"
                v-model="searchObj.partname"
                placeholder="请输入部门名称"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="负责人">
              <el-input
                style="width: 95%"
                v-model="searchObj.leader"
                placeholder="请输入负责人"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <div>
              <el-button class="primary-btn" @click="fetchData()"
                >搜索</el-button
              >
              <el-button class="primary-btn" @click="resetData">重置</el-button>
            </div>
          </el-col>
        </el-row> -->
        <!-- <el-row style="display:flex">
              <el-button type="primary" icon="el-icon-search"   @click="fetchData()">搜索</el-button>
              <el-button icon="el-icon-refresh"  @click="resetData">重置</el-button>
            </el-row> -->
      </el-form>
    </div>
    <!-- 工具条 -->
    <div class="tools-div" style="display: flex">
      <el-button class="custom-success-btn" @click="add">添 加</el-button>
      <!-- <el-button class="custom-danger-btn" @click="batchRemove()"
        >删 除</el-button
      > -->
    </div>
    <!-- 表格 -->
    <!--      @selection-change="handleSelectionChange" -->
    <el-table
      v-loading="listLoading"
      :data="list"
      stripe
      border
      style="width: 100%; margin-top: 10px"
 
    >
      <!-- <el-table-column type="selection" /> -->

      <el-table-column label="序号" width="70" align="center">
        <template slot-scope="scope">
          {{ (page - 1) * limit + scope.$index + 1 }}
        </template>
      </el-table-column>

      <el-table-column prop="name" align="center" label="部门名称" />
      <el-table-column prop="leader" align="center" label="负责人" />
      <el-table-column prop="phone" align="center" label="电话" />
      <!-- <el-table-column label="状态" width="80">
        <template slot-scope="scope">
          <el-switch
            v-model="scope.row.status == 1"
            @change="switchStatus(scope.row)"
          >
          </el-switch>
        </template>
      </el-table-column> -->
      <!-- <el-table-column prop="createTime" label="创建时间" width="160"/> -->
      <el-table-column label="操作" width="200" align="center">
        <template slot-scope="scope">
          <el-button
            type="primary"
            icon="el-icon-edit"
            @click="edit(scope.row)"
            title="修改"
          />
          <el-button
            type="danger"
            icon="el-icon-delete"
            @click="removeDataById(scope.row.id)"
            title="删除"
          />
          <!-- <el-button type="warning" icon="el-icon-baseball"  @click="showAssignAuth(scope.row)" title="分配权限"/> -->
        </template>
      </el-table-column>
    </el-table>

    <!-- 分页组件 -->
    <el-pagination
      :current-page="page"
      :total="total"
      :page-size="limit"
      style="padding: 30px 0; text-align: center"
      layout="total, prev, pager, next, jumper"
      @current-change="fetchData"
    />

    <el-dialog title="添加" :visible.sync="dialogVisible" width="40%">
      <el-form
        ref="dataForm"
        :model="sysRole"
        :rules="rule"
        label-width="150px"
        style="padding-right: 40px"
      >
        <el-form-item label="部门名称" prop="name">
          <el-input v-model="sysRole.name" />
        </el-form-item>
        <el-form-item label="负责人" prop="leader">
          <el-input v-model="sysRole.leader" />
        </el-form-item>
        <el-form-item label="电话" prop="phone">
          <el-input v-model="sysRole.phone" />
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false" icon="el-icon-refresh-right"
          >取 消</el-button
        >
        <el-button type="primary" icon="el-icon-check" @click="saveOrUpdate()"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <el-dialog title="修改" :visible.sync="dialogVisible1" width="40%">
      <el-form
        ref="dataForm1"
        :model="sysRole1"
        :rules="rule1"
        label-width="150px"
        style="padding-right: 40px"
      >
      <el-form-item label="部门名称" prop="name">
          <el-input v-model="sysRole1.name" />
        </el-form-item>
        <el-form-item label="负责人" prop="leader">
          <el-input v-model="sysRole1.leader" />
        </el-form-item>
        <el-form-item label="电话" prop="phone">
          <el-input v-model="sysRole1.phone" />
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible1 = false" icon="el-icon-refresh-right"
          >取 消</el-button
        >
        <el-button type="primary" icon="el-icon-check" @click="updateRole()"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </div>
</template>
  <script>
//引入定义接口的js文件
  import api from "@/api/system/role";
  import {addpart,getpart,deletepart,editpart} from '@/api/table'
export default {
  //定义初始值

  data() {
    const validatePhone = (rule, value, callback) => {
      const phoneReg = /^1[3-9]\d{9}$/;
      if (!value) {
        callback(new Error("电话号码不能为空"));
      } else if (!phoneReg.test(value)) {
        callback(new Error("电话号码格式不正确"));
      } else {
        callback();
      }
    };
    return {
      listLoading: false, //是否显示加载
      list: [], //部门列表
      total: 0, //总记录数
      page: 1, //当前页
      limit: 8, //每页显示记录数
      searchObj: {
        partname: "",
        leader: "",
      }, //条件查询封装对象

      dialogVisible: false, //弹出框
      dialogVisible1: false, //弹出框
      sysRole: {
        name: "",
        parentId: 0,
        treePath: "",
        sortValue: 0,
        leader: "",
        phone: "",
        status: 1,
        children: [],
      }, //封装添加表单数据
      sysRole1: {
        name: "",
        parentId: 0,
        treePath: "",
        sortValue: 0,
        leader: "",
        phone: "",
        status: 1,
        children: [],
      }, //封装添加表单数据
      selectValue: [], //复选框选择内容封装数组
      rule: {
        leader: [{ required: true, message: "请输入负责人", trigger: "blur" }],
        name: [{ required: true, message: "请输入部门名称", trigger: "blur" }],
        phone: [
          { required: true, message: "电话号码不能为空", trigger: "blur" },
          { validator: validatePhone, trigger: "blur" },
        ],
      },
      rule1: {
        leader: [{ required: true, message: "请输入负责人", trigger: "blur" }],
        name: [{ required: true, message: "请输入部门名称", trigger: "blur" }],
        phone: [
          { required: true, message: "电话号码不能为空", trigger: "blur" },
          { validator: validatePhone, trigger: "blur" },
        ],
      },
    };
  },
  //页面渲染之前执行
  created() {
    //调用列表方法
      this.fetchData()
  },
  methods: {
    //具体方法
    //跳转分配菜单权限
    showAssignAuth(row) {
      this.$router.push(
        "/system/assignAuth?id=" + row.id + "&roleName=" + row.roleName
      );
    },
    //复选框发生变化执行方法
    handleSelectionChange(selection) {
      console.log(selection);
      this.selectValue = selection;
      //console.log(this.selectValue)
    },
    //批量删除
    batchRemove() {
      //判断
      if (this.selectValue.length == 0) {
        this.$message.warning("请选择要删除的记录！");
        return;
      }
      this.$confirm("此操作将永久删除该部门, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        console.log("删除数据");
        deletepart().then((res) => {
          console.log(res);
        })
        //数组
        // var idList = [];
        // //获取多个复选框对应id，封装到数组里面
        // // [1,2,3]
        // for (var i = 0; i < this.selectValue.length; i++) {
        //   var obj = this.selectValue[i];
        //   //id值
        //   var id = obj.id;
        //   //放到数组里面
        //   idList.push(id);
        // }
        // api.batchRemove(idList).then((response) => {
        //   //提示
        //   this.$message({
        //     type: "success",
        //     message: "删除成功!",
        //   });
        //   //刷新
        //   this.fetchData();
        // });
      });
    },
    //修改-数据回显
    edit(row) {
      //弹出框
      this.dialogVisible1 = true;
        console.log(row);
      const a = JSON.stringify(row)
      this.sysRole1 = JSON.parse(a);
    },
    //点击确定
    saveOrUpdate() {
      //判断添加还是修改
      //   this.sysRole
      // 进行添加接口，以及查询
      //     this.dialogVisible = false;
      //   console.log(this.sysRole);
      //     this.list.push(this.sysRole);
      this.$refs["dataForm"].validate((valid) => {
        if (valid) {
          //   alert('submit!');
          console.log(this.sysRole);
          this.dialogVisible = false;
          // this.list.push(this.sysRole);
          // const a = localStorage.getItem('token')
          addpart(this.sysRole).then((res) => {
            console.log(res)
            if (res.code == 200) {
              this.$message.success("添加成功！");
              this.fetchData()
            }
          })
    //       this.$http.post('/admin/system/sysDept/save',this.sysRole).then((res)=>{
    //         console.log(res);
    //       }, {
    //     headers: {
    //         token: a // 把 token 放到请求头中
    //     }
    // })
        } else {
          console.log("error submit!!");
          return false;
        }
      });
      // if(!this.sysRole.id) {
      //   //添加
      //   this.saveRole()
      // } else {
      //   this.updateRole()
      // }
    },
    //修改的方法
      updateRole() {
          console.log(123);
        console.log(this.$refs.dataForm1);
        this.$refs.dataForm1.validate((valid) => {
        if (valid) {
          //   alert('submit!');
          console.log(this.sysRole1);
          editpart(this.sysRole1).then((res) => {
            console.log(res);
            if (res.code == 200) {
              this.$message.success("更新成功！");
              this.fetchData()
            }
          })
          this.dialogVisible1 = false;
          //   this.list.push(this.sysRole);
        } else {
          console.log("error submit!!");
          return false;
        }
      });
      // 进行修改接口以及查询
      // api.update(this.sysRole)
      //   .then(response => {
      //     //提示
      //     this.$message({
      //       type: 'success',
      //       message: '修改成功!'
      //     });
      //     //关闭弹框
      //     this.dialogVisible = false
      //     //刷新页面
      //     this.fetchData()
      //   })
    },
    //添加的方法
    saveRole() {
      api.saveRole(this.sysRole).then((response) => {
        //提示
        this.$message({
          type: "success",
          message: "添加成功!",
        });
        //关闭弹框
        this.dialogVisible = false;
        //刷新页面
        this.fetchData();
      });
    },
    //点击添加，弹出框
    add() {
      this.dialogVisible = true;
      this.sysRole = {
        name: "",
        parentId: 0,
        treePath: "",
        sortValue: 0,
        leader: "",
        phone: "",
        status: 1,
        children: [],
      };
    },
    //删除
    removeDataById(id) {
      this.$confirm("此操作将永久删除该部门, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        //调用方法删除
        // api.removeId(id).then((response) => {
        //   //提示
        //   this.$message({
        //     type: "success",
        //     message: "删除成功!",
        //   });
        //   //刷新
        //   this.fetchData();
        // });
        deletepart(id).then((res) => {
          console.log(res);
          if (res.code == 200) {
              this.$message.success("删除成功！");
              this.fetchData()
            }
        })
      });
    },
    //重置
    resetData() {
      //清空表单
      this.searchObj = {
        partname: "",
        leader: "",
      };
      //查询所有数据
      // this.fetchData()
    },
    switchStatus(row) {
      if (row.status == 0) {
        row.status = 1;
      } else {
        row.status = 0;
      }
      //判断，如果当前用户可用，修改禁用
      // row.status = row.status === 1 ? 0 : 1
      // api.updateStatus(row.id,row.status)
      //   .then(response => {
      //     this.$message.success(response.message || '操作成功')
      //     this.fetchData()
      //   })
    },
    //条件分页查询列表
    //pageNum 查询页数
    fetchData(pageNum = 1) {
      this.list = []
      // console.log(this.searchObj);
      getpart().then((res) => {
        console.log(res);
        
        this.list.push(...res.data.各中心)
        this.list.push(...res.data.各处室)
        this.total = this.list.length
      })
      //页数赋值
      // this.page = pageNum
      // //ajax
      // api.getPageList(this.page,this.limit,this.searchObj)
      //   .then(response => {
      //     //this.listLoading = false
      //     //console.log(response)
      //     //每页数据列表
      //     this.list = response.data.records
      //     //总记录数
      //     this.total = response.data.total
      //   })
    },
  },
};
</script>
  <style lang="scss" scoped>
.custom-success-btn {
  width: 6.0625rem;
  height: 2.5rem;
  background-color: rgba(29, 183, 82, 0.74);
  border-radius: 0.3125rem;
  color: #fff;
  font-size: 1rem;
  box-shadow: 0 0.1875rem 0.3125rem rgba(0, 0, 0, 0.35);
  &:hover,
  &:focus {
    background: #1db752;
    border-radius: 0.3125rem;
    color: #fff;
    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.25);
  }
  &:active {
    box-shadow: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.3);
  }
}
.custom-danger-btn {
  width: 6.0625rem;
  height: 2.5rem;
  background-color: rgba(225, 63, 31, 0.7);
  border-radius: 0.3125rem;
  color: #fff;
  font-size: 1rem;
  box-shadow: 0 0.1875rem 0.3125rem rgba(0, 0, 0, 0.35);
  &:hover,
  &:focus {
    background: #e13f1f;
    border-radius: 0.3125rem;
    color: #fff;
  }
}
.custom-primary-btn {
  width: 6.0625rem;
  height: 2.5rem;
  background-color: rgba(45, 107, 164, 0.7);
  border-radius: 0.3125rem;
  color: #fff;
  font-size: 1rem;
  box-shadow: 0 0.1875rem 0.3125rem rgba(0, 0, 0, 0.35);

  &:hover,
  &:focus {
    background: #2d6ba4;
    border-radius: 0.3125rem;
    color: #fff;
  }
}
.custom-info-btn {
  width: 6.0625rem;
  height: 2.5rem;
  background-color: rgba(31, 193, 189, 0.7);
  border-radius: 0.3125rem;
  color: #fff;
  font-size: 1rem;
  box-shadow: 0 0.1875rem 0.3125rem rgba(0, 0, 0, 0.35);

  &:hover,
  &:focus {
    background: #1fc1bd;
    border-radius: 0.3125rem;
    color: #fff;
  }
}

.custom-warning-btn {
  width: 6.0625rem;
  height: 2.5rem;
  background-color: rgba(26, 127, 221, 0.7);
  border-radius: 0.3125rem;
  color: #fff;
  font-size: 1rem;
  box-shadow: 0 0.1875rem 0.3125rem rgba(0, 0, 0, 0.35);

  &:hover,
  &:focus {
    background: #1a7fdd;
    border-radius: 0.3125rem;
    color: #fff;
  }
}
.primary-btn {
  width: 6.0625rem;
  height: 2.5rem;
  background-color: #205382;
  border-radius: 0.3125rem;
  color: #fff;
  font-size: 1rem;
}
.tools-div {
  text-align: left;
  margin-left: 2%;
}
</style>